package org.timemachine.generator.spi;

import java.io.IOException;

import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtField;
import javassist.NotFoundException;

public interface ChangeClassGenerator {
	
	CtClass generateChangeClass(ClassPool classPool, Class<?> clazz) throws NotFoundException, CannotCompileException, ClassNotFoundException;
	CtClass createChangeClass(ClassPool classPool, String packageName, String className) throws CannotCompileException, NotFoundException;
	String writeFile(CtClass cc, String pathCreateFolder) throws CannotCompileException, IOException;
	CtClass addPrimaryKeyMethodsToClass(CtClass cc) throws CannotCompileException, NotFoundException, Exception;
	void addMasterAndChildFieldsToClass(Class<?> class1, CtClass cc, CtField ctField, CtClass joinClass) throws NoSuchFieldException, NotFoundException, CannotCompileException;
	CtClass addChangeIdField(CtClass cc) throws CannotCompileException;

}
